#ifndef NEWPROJECT_H
#define NEWPROJECT_H

#include <QWizard>

#include <QGridLayout>
#include <QCheckBox>
#include <QLabel>
#include <QLineEdit>
#include <QGroupBox>
#include <QRadioButton>


#include "Control/config.h"

#define NUMBEROFBOTTLES 14

//class QCheckBox;
// class QGroupBox;
// class QLabel;
// class QLineEdit;
// class QRadioButton;



 class NewProject : public QWizard
 {
     Q_OBJECT

 public:
     NewProject(QWidget *parent = 0);

     QString getFileName();
     bool *getActiveBottles();
     float* getBottleVolumes();
     float* getSludgeVolumes();
     float* getSubstrateVolumes();
     void initAllArrays();
     Config *getConfig();


     Config *config;
     QString projectName;
     QString* getBottleGroupNames();
     bool activeBottles[NUMBEROFBOTTLES];
     float volumeBottles[NUMBEROFBOTTLES];
     float volumeSludge[NUMBEROFBOTTLES];
     float volumeSubstrate[NUMBEROFBOTTLES];
     QString bottleGroupNames[4];

     void accept();
 };

 class IntroPage : public QWizardPage
 {
     Q_OBJECT

 public:
     IntroPage(QWidget *parent = 0);

 private:
     QLabel *label;
 };

 class ClassInfoPage : public QWizardPage
 {
     Q_OBJECT

 public:
     ClassInfoPage(QWidget *parent = 0);
     QGridLayout *layout;
     QGroupBox *groupBoxActivity;

     void setupActivityBox();
     void setupImagesForActivityBox();
     void loadImages();
     void setupImageRow(int gridRow);
     void setupValueRow(int gridRow);
     void setupRefAndTemp();
     QPixmap *inputActive;
     QPixmap *inputInactive;
     QLabel* activityLabels[15];
     QCheckBox* valueLabels[15];
     QLabel* placeholderLabels[8];
     bool isActivated[15];

     int valueLabelCounter;
     int labelCounter;
     int placeholderCounter;


 private:
     QLabel *classNameLabel;
     QLabel *baseClassLabel;
     QLineEdit *classNameLineEdit;
     QLineEdit *baseClassLineEdit;
     QCheckBox *qobjectMacroCheckBox;
     QGroupBox *groupBox;
     QRadioButton *qobjectCtorRadioButton;
     QRadioButton *qwidgetCtorRadioButton;
     QRadioButton *defaultCtorRadioButton;
     QCheckBox *copyCtorCheckBox;
 public slots:
     void changeColor();
 };

 class CulturePage : public QWizardPage
 {
     Q_OBJECT

 public:
     CulturePage(QWidget *parent = 0);

 protected:
     void initializePage();

 private:
     QCheckBox *commentCheckBox;
     QCheckBox *protectCheckBox;
     QCheckBox *includeBaseCheckBox;
     QLabel *projectNameLabel;
     QLabel *bottleNameLabel1;
     QLabel *bottleNameLabel2;
     QLabel *bottleNameLabel3;
     QLabel *bottleNameLabel4;
     QLabel *baseIncludeLabel;
     QLineEdit *projectNameLineEdit;
     QLineEdit *bottleNameLineEdit1;
     QLineEdit *bottleNameLineEdit2;
     QLineEdit *bottleNameLineEdit3;
     QLineEdit *bottleNameLineEdit4;
     QLineEdit *baseIncludeLineEdit;
 };

 class BottleSpecifyPage : public QWizardPage
 {
     Q_OBJECT

 public:
     BottleSpecifyPage(QWidget *parent = 0);

 protected:
     void initializePage();
     void initializeInputs();

 private:
     QLabel *volumeLabels[NUMBEROFBOTTLES];
     QLineEdit* volumeSludgeEdit[NUMBEROFBOTTLES];
     QLineEdit* volumeSubstrateEdit[NUMBEROFBOTTLES];
     QLineEdit* volumeBottleEdit[NUMBEROFBOTTLES];
 };



 class ConclusionPage : public QWizardPage
 {
     Q_OBJECT

 public:
     ConclusionPage(QWidget *parent = 0);

 protected:
     void initializePage();

 private:
     QLabel *label;
 };



#endif // NewProject_H
